'''主应用程序包,包含所有的应用程序和相关的包'''
# 主要工作
# 1.构建flask应用实例以及各种配置
# 2.创建SQLAlchemy的应用实例
# 3.关联蓝图(BluePrint)
from flask import Flask
from flask_sockets import Sockets
from socket import *
# from flask_sqlalchemy import SQLAlchemy

# 声明SQLAlchemy的应用实例
# db = SQLAlchemy() 

# 创建websocket
websockets = Sockets()

def create_app():
    # 创建flask程序实例
    app = Flask(__name__)
    # 配置启动模式为调试模式
    # app.config['DEBUG'] = True
    app.config['THREADED'] = True
    app.config['PROCESSES'] = 9


    # # 配置数据库连库信息
    # app.config["SQLALCHEMY_DATABASE_URI"] = \
    # "mysql+pymysql://root:123456@localhost:3306/blog"
    # # 配置数据库自动提交
    # app.config["SQLALCHEMY_COMMIT_ON_TEARDOWN"] = True
    # app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False

    # 配置session所需要的SECRET_KEY
    app.config["SECRET_KEY"] = "cabd"

    # 关联db以及app
    # db.init_app(app)

    websockets.init_app(app)

    # 将main蓝图程序与app关联
    from .main import main_blueprint
    app.register_blueprint(main_blueprint)

    # 返回已创建好的flask程序实例
    return app
